(define-key map "\C-b" prefix-map)
(which-key-add-keymap-based-replacements map
"C-a" '("mycomplete" . complete)
- "C-b" "mymap")
+ "C-b" "mymap"
+ "C-c" "mymap2")
+ (define-key map "\C-ca" 'foo)
(should (equal
(which-key--get-keymap-bindings map)
'(("C-a" . "mycomplete")
- ("C-b" . "group:mymap"))))))
+ ("C-b" . "group:mymap")
+ ("C-c" . "group:mymap2"))))))
(ert-deftest which-key-test--prefix-declaration ()
"Test `which-key-declare-prefixes' and
(cond ((consp replacement)
(define-key keymap (kbd key) replacement))
((stringp replacement)
- (define-key keymap (kbd key) (cons replacement
- (lookup-key keymap (kbd key)))))
+ (let ((binding (lookup-key keymap (kbd key))))
+ (if (or (null binding)
+ (numberp binding))
+ ;; using a keymap in case someone intends to make this a
+ ;; prefix. If they want to bind something else, they will just
+ ;; end up overriding the prefix map
+ (define-key keymap (kbd key)
+ (cons replacement (make-sparse-keymap)))
+ (define-key keymap (kbd key) (cons replacement binding)))))
(t
(user-error "replacement is neither a cons cell or a string")))
(setq key (pop more)